﻿using clasesBase;
using Logica;
using System.Drawing;
using System;
using accesoDatos;

namespace PlanificacionProduccion
{
    public partial class FrmCaractLoteDet : FrmABM
    {
        ManejadorAyudas ayuda = new ManejadorAyudas();

        public FrmCaractLoteDet()
        {
            InitializeComponent();
        }

        private void load_Load(object sender, System.EventArgs e)
        {
            datosUnidades.DataSource = UnidadMedida.listarElementos(UnidadMedida.tablaBD);
            if (datosUnidades.Count > 0)
            {
                cmbUnidades.DisplayMember = "nombre";
                cmbUnidades.ValueMember = "id";
            }

            if (base.idElemento != 0) mostrarDatos();
        }

        private void mostrarDatos()
        {
            CaracteristicaLote elem = new CaracteristicaLote(base.idElemento);
            txtId.Text = elem.ID.ToString();
            txtNombre.Text = elem.Nombre.Trim();
            if (elem.ObjUnidadMedida.ID != 0)
            {
                chkUnidadMedida.Checked = true;
                cmbUnidades.SelectedValue = elem.ObjUnidadMedida.ID;
            }
            else chkUnidadMedida.Checked = false;

            cmbUnidades.Enabled = chkUnidadMedida.Checked;
            txtCantEstimada.Text = elem.CantidadEstimada.Trim();
        }

        private void btnGuardar_Click(object sender, System.EventArgs e)
        {
            quitarResaltado();
            if (camposCompletos())
            {
                if (Notificador.accionGuardarConfirmada())
                {
                    // Si se tratase de un elemento nuevo, el id correspondiente es 0.
                    int idElemento = txtId.Text.Trim() == "" ? 0 : Convert.ToInt32(txtId.Text);

                    CaracteristicaLote elem = new CaracteristicaLote(idElemento);
                    elem.Nombre = txtNombre.Text.Trim();
                    elem.CantidadEstimada = txtCantEstimada.Text.Trim();
                    int idUnidad = chkUnidadMedida.Checked ? (cmbUnidades.SelectedValue != null ? (int)cmbUnidades.SelectedValue : 0) : 0;
                    if (elem.ObjUnidadMedida.ID != idUnidad) elem.ObjUnidadMedida = new UnidadMedida(idUnidad);

                    // Guardo la información
                    string error = elem.guardar();
                    Notificador.resultadoABM(idElemento == 0 ? TipoOperacionABM.ALTA : TipoOperacionABM.MODIFICACION, error);
                    if (error.Trim() == "") this.Close();
                }
            }
            else Notificador.camposNoCompletos();
        }

        private bool camposCompletos()
        {
            bool completos = true;

            if (txtNombre.Text.Trim() == "") { completos = false; lblNombre.ForeColor = Color.Red; }
            if (txtCantEstimada.Text.Trim() != "" && !chkUnidadMedida.Checked)
            {
                completos = false; 
                lblCantidad.ForeColor = Color.Red;
                chkUnidadMedida.ForeColor = Color.Red;
            }
            if (chkUnidadMedida.Checked)
            {
                if (txtCantEstimada.Text.Trim() != "" && cmbUnidades.SelectedValue == null)
                {
                    completos = false; 
                    lblCantidad.ForeColor = Color.Red;
                    chkUnidadMedida.ForeColor = Color.Red;
                }
                else if (txtCantEstimada.Text.Trim() == "" && cmbUnidades.SelectedValue != null)
                {
                    completos = false;
                    lblCantidad.ForeColor = Color.Red;
                    chkUnidadMedida.ForeColor = Color.Red;
                }
            }

            return completos;
        }

        private void quitarResaltado()
        {
            lblNombre.ForeColor = Color.Black;
            lblCantidad.ForeColor = Color.Black;
            chkUnidadMedida.ForeColor = Color.Black;
        }

        private void chkUnidadMedida_CheckedChanged(object sender, EventArgs e)
        {
            cmbUnidades.Enabled = chkUnidadMedida.Checked;
        }

        private void txtCantEstimada_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
        {
            Validador.soloDecimales_KeyPress(sender, e);
        }
    }
}
